To increase performance, computer systems often implement cache memory/storage systems. A cache memory/storage system is a collection of data duplicating original data values stored elsewhere, where the original data is more expensive to fetch relative to the cost of reading the cached data. The original data may be relatively more expensive to fetch due to slow access time, bandwidth limitations, latency, or other reason. Thus, a cache memory/storage is a temporary storage area where frequently accessed data can be stored for rapid access. Once data is stored in a cache memory/storage system then all future requests for that same data can be made by accessing the cached copy of data rather than re-fetching the original data.
Cache memory/storage systems are implemented in many different areas of computer science. For example, cache memory/storage systems may be implemented within individual computer processors, within computer memory systems, within long term storage systems such as disk drive systems, within computer networks, and in any other situation wherein a performance improvement may be obtained by including a small, local, and/or faster cache memory/storage system that replicates a portion of a larger but lower performance memory/storage system.
A key concept in cache memory systems is cache coherency. Cache coherence refers to the integrity of data stored in local caches of a shared storage/memory resource. When two or more cache devices maintain caches of a common memory resource then problems may arise. For example, if a first cache device has a copy of a memory block from a previous read and a second cache device changes that same memory block then the first cache device could be left with an invalid cache of memory absent any notification of the change made by the second cache device. Cache coherence systems are intended to manage such potential cache conflicts and maintain consistency of the data between multiple caches and the main memory/storage resource.